// blob流方式的.txt文件
export function handleTxtFilePreview(blob) {
    let reader = new FileReader();
    reader.readAsArrayBuffer(blob);
    reader.onload = (evt) => {
        let ints = new Uint8Array(evt.target.result); //要使用读取的内容，所以将读取内容转化成Uint8Array
        ints = ints.slice(0, blob.size); //截取一段读取的内容
        let text = new TextDecoder('utf-8').decode(ints); //二进制缓存区内容转化成中文（即也就是读取到的内容）
        console.log(text);
    };
}

//   blob流方式的.png和.jpg文件
export function handleImageFilePreview(blob) {
    let url = URL.createObjectURL(blob);
}

// blob流方式的.xls和.xlsx文件
// 1.vue需要安装插件xlsx。安装方式：npm install xlsx

// 2.引入方式：import * as xlsx from "xlsx"
export function handleExcelFilePreview(blob) {
    let reader = new FileReader();
    reader.readAsArrayBuffer(blob);
    reader.onload = (evt) => {
        let ints = new Uint8Array(evt.target.result); //要使用读取的内容，所以将读取内容转化成Uint8Array
        ints = ints.slice(0, blob.size);
        let workBook = xlsx.read(ints, { type: "array" });
        let sheetNames = workBook.SheetNames;
        let sheetName = sheetNames[0];
        let workSheet = workBook.Sheets[sheetName];


        //获取Excle内容，并将空内容用空值保存
        let excelTable = xlsx.utils.sheet_to_json(workSheet, { defval: '' });


        // 获取Excel头部
        let tableThead = Array.from(Object.keys(excelTable[0])).map(
            (item) => {
                return item
            }
        );
        this.previewData.content = {};
        this.previewData.content.tableContent = excelTable;
        this.previewData.content.tableThead = tableThead;
        this.previewDialogOpen = true;
    }


}

// blob流方式的.docx文件
//   <div ref="word"> </div> 通过这种方式使用
// 1.vue需要安装插件docx-preview。安装方式：npm install docx-preview
// 2.只能预览.docx文件，.doc文件无法预览。

export function handleWrodFilePreview(blob) {
    this.previewDialogOpen = true;
    let docx = require("docx-preview");


    this.$nextTick(() => {
        docx.renderAsync(blob, this.$refs.word);
    })


}


// .blob流方式的.pdf文件
// 使用
//   <pdf v-for="pdfPage in previewData.pdfPages" :key="pdfPage" :page="pdfPage" :src="previewData.src"
//   width="100%">
// </pdf>
// 1.vue需要安装插件vue-pdf。安装方式：npm install vue-pdf
// 2.引入方式：import pdf from "vue-pdf"
// 3.components注入方式：
// 4.如果pdf文件过大，会导致浏览器崩溃。
export function handlePdfFilePreview(blob) {
    this.previewData.src = URL.createObjectURL(blob);
    let loadingTask = pdf.createLoadingTask(this.previewData.src);
    loadingTask.promise.then((pdf) => {
        this.previewData.pdfPages = pdf.numPages;
    })
}




